package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.VO.operate.OperateAdGetOneVO;
import com.itlong.cloud.POJO.VO.operate.OperateAdVO;
import com.itlong.cloud.POJO.VO.operate.OperateProjectInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-运营管理-广告数据访问接口。
 * <desc/>
 *
 * @createDate 2017/10/16.
 */
@Mapper
@Repository
public interface IOperateAdDao {

    /**
     * <desc>
     *      保存广告信息。
     * <desc/>
     *
     * @param  params
     * @return 返回影响函数
     * @author shengen.T
     * @createDate 2017/10/11
     */
    Integer save(Map<String,Object> params);

     /**
      * <desc>
      *      修改广告信息。
      * <desc/>
      *
      * @param  params
      * @return  返回影响函数
      * @author shengen.T
      * @createDate 2017/10/17
      */
    Integer update(Map<String,Object> params);

     /**
      * <desc>
      *      发布广告。
      * <desc/>
      *
      * @param  adIds 广告ID列表
      * @param  updateTime 更新时间
      * @return
      * @author shengen.T
      * @createDate 2017/10/17
      */
    Integer publishAd(@Param("adIds")String[] adIds,@Param("updateTime") Date updateTime );

    /**
     * <desc>
     *      发布广告。
     * <desc/>
     *
     * @param  adIds 广告ID列表
     * @param  updateTime 更新时间
     * @return
     * @author shengen.T
     * @createDate 2017/10/17
     */
    Integer deleteAd(@Param("adIds")String[] adIds,@Param("updateTime") Date updateTime );

     /**
      * <desc>
      *      设置广告状态。
      * <desc/>
      *
      * @param  adId 广告ID
      * @param  status
      * @return
      * @author shengen.T
      * @createDate 2017/10/17
      */
    Integer setStatus(@Param("adId")String adId,@Param("status") Integer status);

     /**
      * <desc>
      *      获取广告信息。
      * <desc/>
      *
      * @param  adId
      * @return
      * @author shengen.T
      * @createDate 2017/10/17
      */
     OperateAdGetOneVO getOne(@Param("adId")String adId);

    /**
     * <desc>
     *      根据广告ID获取映射项目信息列表。
     * <desc/>
     *
     * @param  adId 广告ID
     * @return
     * @author shengen.T
     * @createDate 2017/9/28
     */
    List<OperateProjectInfoVO> getProjectList(@Param("adId")String adId);


    /**
      * <desc>
      *      分页查询广告信息列表。
      * <desc/>
      *
      * @param  param
      * @return
      * @author shengen.T
      * @createDate 2017/10/17
      */
    List<OperateAdVO> getPage(Map<String,Object> param);

     /**
      * <desc>
      *      获取条件查询总记录数。
      * <desc/>
      *
      * @param  param
      * @return
      * @author shengen.T
      * @createDate 2017/10/17
      */
    Integer getPageCount(Map<String,Object> param);


     /**
      * <desc>
      *      获取过期广告的ID列表。
      * <desc/>
      *
      * @param  nowTime 系统当前时间
      * @return
      * @author shengen.T
      * @createDate 2017/11/24
      */
    List<String> getDisabledAdIdList(@Param("nowTime") Date nowTime );

     /**
      * <desc>
      *      批量设置发布状态。
      * <desc/>
      *
      * @param  adIdList 广告ID列表
      * @return
      * @author shengen.T
      * @createDate 2017/11/24
      */
    Integer setPublishStateBatch(@Param("adIdList") List<String> adIdList);

    /**
     * <desc>
     * 广告审核通过
     * </desc>
     *
     * @param params 参数map
     * @return
     * @Author Zhu.yj
     * @createDate 2020/12/24
     */
    Integer audit(Map<String, Object> params);

    /**
     * <desc>
     *      获取已到发布时间但未发布的
     * </desc>
     *
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/31
     */
    List<String> getWillPublishIdList(@Param("nowTime") Date nowTime);

    /**
     * <desc>
     *      批量修改要发布的广告id
     * </desc>
     *
     * @param adIdList 要发布的广告id列表
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/31
     */
    Integer batchUpdatePublishStatus(@Param("adIdList") List<String> adIdList);
}
